define('bgRole', function(require, exports, module) {
	var view = function(id) {
		$.get(contextPath + '/bgRole/update/' + id).done(function(html) {
			addBreadcrumbMenu('查看');
			pageContents.html(html);
			init('view', id);
		});
	};
	var add = function() {
		$.get(contextPath + '/bgRole/new').done(function(html) {
			addBreadcrumbMenu('新增');
			pageContents.html(html);
			init('add');
		});
	};
	var modify = function(id) {
		$.get(contextPath + '/bgRole/update/' + id).done(function(html) {
			addBreadcrumbMenu('修改');
			pageContents.html(html);
			init('modify', id);
		});
	};
	var remove = function(ids, dataGrid) {
		var data = {
			delIds : ids.join('@')
		};
		$.post(contextPath + '/bgRole/delete', data).done(function(data) {
			if (data.statusCode == 20011011) {
				dataGrid.message({
					type : 'success',
					content : data.msg
				});
				dataGrid.grid('refresh');
			} else {
				dataGrid.message({
					type : 'error',
					content : data.msg
				});
			}
		});
	};
	var asignMenu = function(id) {
		$.get(contextPath + '/bgRole/asignMenu').done(function(html) {
			addBreadcrumbMenu('分配权限');
			pageContents.html(html);
			pageContents.find('#returnBtn').on('click', function() {
				var children = breadcrumb.children();
				children[children.length - 2].click();
			});
			$.get(contextPath + '/bgMenu/menus').done(function(data) {
				var tree = pageContents.find('#tree').on('complate', function() {
					var $this = $(this);
					$.get(contextPath + '/bgRoleMenu/selectMenus/' + id).done(function(data) {
						$.each(data, function() {
							$this.find('#' + this.bgMenuId).click();
						});
					});
				});
				tree.tree({
					localData : data,
					multiSelect : true,
					loadingHTML : '<div class="tree-loading"><i class="fa fa-refresh fa-spin blue"></i></div>',
					'open-icon' : 'fa-minus fa ',
					'close-icon' : 'fa-plus fa',
					'selectable' : true,
					'selected-icon' : 'fa-check fa',
					'unselected-icon' : 'fa-times fa'
				});
				pageContents.find('#saveBtn').on('click', function() {
					var $btn = $(this);
					if ($btn.hasClass('disabled')) {
						pageContents.find('[role="form"]').message({
							type : 'warning',
							content : '请不要重复提交!'
						});
						return;
					}
					var menus = tree.getTree().selectedItems();
					var menuIds = [-1];
					$.each(menus, function() {
						menuIds.push(this.id);
					});
					$btn.addClass('disabled').attr('disabled', true);
					$.post(contextPath + '/bgRoleMenu/asignMenu/' + id + '?menuIds=' + menuIds.join('@')).done(function(data) {
						if (data.statusCode == 20011011) {
							$('body').message({
								type : 'success',
								content : '保存成功'
							});
							pageContents.find('#returnBtn').click();
						} else {
							pageContents.find('[role="form"]').message({
								type : 'error',
								content : data.msg
							});
							$btn.removeAttr('disabled').removeClass('disabled');
						}
					});
				});
			});
		});
	};
	var init = function(type, id) {
		pageContents.find('#returnBtn').on('click', function() {
			var children = breadcrumb.children();
			children[children.length - 2].click();
		});
		var form = pageContents.find('#form');
		var saveBtn = pageContents.find('#saveBtn');
		if (type == 'modify') {
			pageContents.find('.panel-title').text('修改角色信息');
		} else if (type == 'view') {
			pageContents.find('.panel-title').text('查看角色信息');
			form.find('input, select').attr('disabled', 'disabled');
			saveBtn.hide();
			return;
		} else {
			pageContents.find('.panel-title').text('新增角色');
		}
		require('util').initValidate(form);
		saveBtn.on('click', function() {
			var form = pageContents.find('#form');
			var $btn = $(this);
			if ($btn.hasClass('disabled')) {
				form.message({
					type : 'warning',
					content : '请不要重复提交!'
				});
				return;
			}
			$btn.addClass('disabled').attr('disabled', true);
			var util = require('util');
			if (!util.validate(form)) {
				$btn.removeAttr('disabled').removeClass('disabled');
				return;
			}
			var data = util.getFormData(form);
			$.post(contextPath + '/bgRole/save', data).done(function(data) {
				if (data.statusCode == 20011011) {
					$('body').message({
						type : 'success',
						content : '保存成功'
					});
					pageContents.find('#returnBtn').click();
				} else {
					pageContents.find('[role="form"]').message({
						type : 'error',
						content : data.msg
					});
					$btn.removeAttr('disabled').removeClass('disabled');
				}
			});
		});
	};
	module.exports = {
		view : view,
		add : add,
		modify : modify,
		remove : remove,
		asignMenu : asignMenu
	};
});
